/**
 * 声破天Premium页面逻辑
 * 处理订阅计划选择和FAQ交互
 */

document.addEventListener('DOMContentLoaded', function() {
    // 初始化多语言支持
    if (window.i18n) {
        window.i18n.initLanguage();
    }
    
    // 初始化FAQ手风琴效果
    initFaqAccordion();
    
    // 存储套餐信息到localStorage
    storePremiumPlans();
    
    // 更新界面显示用户的订阅状态
    updateSubscriptionUI();
    
    // 初始化订阅按钮点击事件
    initSubscriptionButtons();
    
    // 初始化CTA按钮
    initCtaButton();
});

/**
 * 根据用户订阅状态更新界面显示
 */
function updateSubscriptionUI() {
    // 尝试从两个可能的存储位置获取用户数据
    let currentUser = null;
    
    try {
        // 先尝试从新的存储键获取
        const userData = localStorage.getItem('currentUser');
        if (userData) {
            currentUser = JSON.parse(userData);
        }
        
        // 如果没有，尝试从旧存储键获取并迁移
        if (!currentUser) {
            const oldUserData = localStorage.getItem('shengpotian_current_user');
            if (oldUserData) {
                currentUser = JSON.parse(oldUserData);
                // 迁移到新的存储键
                localStorage.setItem('currentUser', oldUserData);
            }
        }
    } catch (error) {
        console.error('解析用户数据时出错:', error);
        return;
    }
    
    // 如果用户未登录，显示常规订阅界面
    if (!currentUser) {
        console.log('未检测到登录用户，显示常规订阅界面');
        return;
    }
    
    console.log('已检测到用户:', currentUser.username);
    console.log('Premium状态:', currentUser.isPremium ? '已订阅' : '未订阅');
    
    // 如果用户已订阅Premium
    if (currentUser.isPremium) {
        console.log('用户已订阅Premium，更新UI显示');
        console.log('用户订阅计划ID:', currentUser.premiumPlan);
        
        // 获取所有计划
        const plans = JSON.parse(localStorage.getItem('premiumPlans') || '[]');
        
        // 找到当前用户的订阅计划
        const userPlan = plans.find(plan => plan.id === currentUser.premiumPlan);
        
        if (!userPlan) {
            console.warn('找不到用户的订阅计划:', currentUser.premiumPlan);
            console.log('可用计划列表:', plans);
        } else {
            console.log('找到用户订阅计划:', userPlan.name);
        }
        
        // 创建当前订阅信息区域
        createCurrentSubscriptionInfo(currentUser, userPlan || plans[0]);
        
        // 确保所有套餐按钮已加载完成
        setTimeout(() => {
            // 更新所有套餐按钮状态
            updatePlanButtonsForSubscriber(currentUser.premiumPlan);
            
            // 更新CTA区域，显示管理订阅而不是开始使用
            updateCtaForSubscriber();
        }, 100);
    }
}

/**
 * 创建当前订阅信息区域
 */
function createCurrentSubscriptionInfo(user, plan) {
    // 获取订阅信息容器
    const subscriptionPlansContainer = document.querySelector('.subscription-plans');
    if (!subscriptionPlansContainer) {
        console.error('找不到订阅计划容器');
        return;
    }

    // 创建当前订阅信息区域容器
    const infoContainer = document.createElement('div');
    infoContainer.className = 'current-subscription-info';

    // 创建订阅标题
    const header = document.createElement('div');
    header.className = 'subscription-header';
    
    const title = document.createElement('h3');
    title.textContent = '您当前的订阅';
    
    const premiumBadge = document.createElement('span');
    premiumBadge.className = 'premium-badge';
    premiumBadge.textContent = 'Premium';
    
    header.appendChild(title);
    header.appendChild(premiumBadge);
    
    // 创建订阅详情区域
    const details = document.createElement('div');
    details.className = 'subscription-details';
    
    // 计算到期日期
    const expiryDate = user.premiumExpiryDate ? new Date(user.premiumExpiryDate) : new Date();
    const formattedDate = expiryDate.toLocaleDateString('zh-CN', {
        year: 'numeric',
        month: 'long',
        day: 'numeric'
    });
    
    details.innerHTML = `
        <p><strong>当前方案:</strong> ${plan.name}</p>
        <p><strong>价格:</strong> ${plan.price}元/${plan.interval}</p>
        <p><strong>到期时间:</strong> ${formattedDate}</p>
    `;
    
    // 创建操作按钮
    const actions = document.createElement('div');
    actions.className = 'subscription-actions';
    
    const viewDetailsBtn = document.createElement('button');
    viewDetailsBtn.className = 'view-details-btn';
    viewDetailsBtn.textContent = '查看详细信息';
    viewDetailsBtn.addEventListener('click', () => {
        // 跳转到个人资料页的订阅选项卡
        window.location.href = 'profile.html?tab=subscription';
    });
    
    const cancelBtn = document.createElement('button');
    cancelBtn.className = 'subscription-action-btn cancel-subscription';
    cancelBtn.textContent = '取消订阅';
    cancelBtn.addEventListener('click', () => {
        if (confirm('您确定要取消Premium订阅吗？取消后，您将在当前订阅期限结束后失去Premium功能。')) {
            // 设置取消标志，但保留Premium直到过期
            user.cancelPremium = true;
            localStorage.setItem('currentUser', JSON.stringify(user));
            alert('您的订阅将在当前期限结束后取消。');
            
            // 更新取消按钮状态
            cancelBtn.textContent = '已取消';
            cancelBtn.disabled = true;
        }
    });
    
    actions.appendChild(viewDetailsBtn);
    actions.appendChild(cancelBtn);
    
    // 组合所有元素
    infoContainer.appendChild(header);
    infoContainer.appendChild(details);
    infoContainer.appendChild(actions);
    
    // 在付费计划之前插入当前订阅信息
    subscriptionPlansContainer.insertBefore(infoContainer, subscriptionPlansContainer.firstChild);
    
    // 如果用户已经取消订阅，更新按钮状态
    if (user.cancelPremium) {
        cancelBtn.textContent = '已取消';
        cancelBtn.disabled = true;
    }
}

/**
 * 更新套餐按钮，针对已订阅用户
 */
function updatePlanButtonsForSubscriber(currentPlanId) {
    const planButtons = document.querySelectorAll('.plan-button');
    
    // 确保currentPlanId有效
    if (!currentPlanId) {
        console.warn('无效的当前计划ID');
        return;
    }
    
    console.log('当前订阅计划ID:', currentPlanId);
    console.log('找到的计划按钮数量:', planButtons.length);
    
    planButtons.forEach(button => {
        const planId = button.getAttribute('data-plan');
        console.log('按钮计划ID:', planId);
        
        if (planId === currentPlanId) {
            // 当前套餐
            console.log('匹配到当前订阅计划，设置为当前方案');
            button.textContent = '当前方案';
            button.classList.add('current-plan');
            button.disabled = true;
        } else {
            // 其他套餐
            button.textContent = '升级至此方案';
            button.classList.add('upgrade-plan');
        }
    });
}

/**
 * 更新CTA区域，针对已订阅用户
 */
function updateCtaForSubscriber() {
    const ctaButton = document.querySelector('.cta-button');
    if (ctaButton) {
        ctaButton.textContent = '管理您的订阅';
        ctaButton.addEventListener('click', () => {
            window.location.href = 'profile.html?tab=subscription';
        });
    }
}

/**
 * 初始化FAQ手风琴效果
 */
function initFaqAccordion() {
    const faqItems = document.querySelectorAll('.faq-item');
    
    faqItems.forEach(item => {
        const question = item.querySelector('.faq-question');
        
        question.addEventListener('click', () => {
            // 检查当前项是否已展开
            const isActive = item.classList.contains('active');
            
            // 关闭所有已展开的FAQ项
            faqItems.forEach(faq => {
                faq.classList.remove('active');
            });
            
            // 如果当前项未展开，则展开它
            if (!isActive) {
                item.classList.add('active');
            }
        });
    });
}

/**
 * 初始化订阅按钮点击事件
 */
function initSubscriptionButtons() {
    const subscribeButtons = document.querySelectorAll('.plan-button, .cta-button');
    
    subscribeButtons.forEach(button => {
        button.addEventListener('click', (e) => {
            e.preventDefault();
            
            // 如果按钮被禁用（当前计划），不执行任何操作
            if (button.disabled) {
                return;
            }
            
            // 获取计划ID
            const planId = button.getAttribute('data-plan') || 'personal';
            
            // 检查用户是否已登录
            const currentUser = JSON.parse(localStorage.getItem('currentUser') || 'null');
            
            if (!currentUser) {
                // 如果用户未登录，重定向到登录页面
                alert('请先登录您的账号以继续订阅');
                window.location.href = 'login.html?redirect=premium';
                return;
            }
            
            // 如果用户已是Premium会员，询问是否更改套餐
            if (currentUser.isPremium) {
                const plans = JSON.parse(localStorage.getItem('premiumPlans') || '[]');
                const currentPlan = plans.find(plan => plan.id === currentUser.premiumPlan);
                const targetPlan = plans.find(plan => plan.id === planId);
                
                if (currentPlan && targetPlan) {
                    if (currentPlan.price < targetPlan.price) {
                        if (!confirm(`您当前的订阅是${currentPlan.name}(¥${currentPlan.price}/${currentPlan.period})。\n确定要升级到${targetPlan.name}(¥${targetPlan.price}/${targetPlan.period})吗？`)) {
                            return;
                        }
                    } else if (currentPlan.price > targetPlan.price) {
                        if (!confirm(`您当前的订阅是${currentPlan.name}(¥${currentPlan.price}/${currentPlan.period})。\n降级到${targetPlan.name}(¥${targetPlan.price}/${targetPlan.period})将在当前计费周期结束后生效。确定要继续吗？`)) {
                            return;
                        }
                    } else {
                        alert('这已经是您当前的订阅计划');
                        return;
                    }
                }
            }
            
            // 重定向到支付页面，带上计划ID参数
            window.location.href = `payment.html?plan=${planId}`;
        });
    });
}

/**
 * 存储Premium套餐信息到localStorage
 */
function storePremiumPlans() {
    const premiumPlans = [
        {
            id: 'personal',
            name: '个人会员',
            price: 18,
            period: '月',
            features: [
                '无广告打扰',
                '高达 320kbps 音质',
                '离线收听',
                '无限跳过歌曲'
            ]
        },
        {
            id: 'couple',
            name: '情侣会员',
            price: 25,
            period: '月',
            features: [
                '两个Premium账号',
                '无广告打扰',
                '高达 320kbps 音质',
                '独立推荐内容'
            ]
        },
        {
            id: 'family',
            name: '家庭会员',
            price: 35,
            period: '月',
            features: [
                '六个Premium账号',
                '无广告打扰',
                '家长内容控制',
                '共享播放列表'
            ]
        },
        {
            id: 'student',
            name: '学生会员',
            price: 9,
            period: '月',
            features: [
                '需要验证学生身份',
                '无广告打扰',
                '高达 320kbps 音质',
                '优惠50%的价格'
            ]
        }
    ];
    
    // 存储计划信息到localStorage，供支付页面使用
    localStorage.setItem('premiumPlans', JSON.stringify(premiumPlans));
}

/**
 * 显示比较表格
 */
function showComparisonTable() {
    const compareButton = document.getElementById('compare-plans');
    const comparisonTable = document.getElementById('comparison-table');
    
    if (compareButton && comparisonTable) {
        compareButton.addEventListener('click', function(e) {
            e.preventDefault();
            
            // 切换表格显示状态
            if (comparisonTable.style.display === 'none' || !comparisonTable.style.display) {
                comparisonTable.style.display = 'block';
                compareButton.textContent = '隐藏比较';
                
                // 平滑滚动到表格位置
                comparisonTable.scrollIntoView({ behavior: 'smooth' });
            } else {
                comparisonTable.style.display = 'none';
                compareButton.textContent = '比较所有计划';
            }
        });
    }
}

// 初始化CTA按钮
function initCtaButton() {
    const ctaButton = document.querySelector('.premium-cta-btn');
    
    if (ctaButton) {
        ctaButton.addEventListener('click', function() {
            // 检查按钮ID是否为"go-to-profile"
            if (this.id === 'go-to-profile') {
                // 已处理，跳过
                return;
            }
            
            // 滚动到套餐选择区域
            const plansSection = document.querySelector('.premium-plans');
            
            if (plansSection) {
                plansSection.scrollIntoView({ behavior: 'smooth' });
            }
        });
    }
}